﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Modelo;
using System.Data.SqlClient;

namespace BaseDatos
{
    public class BDUsuario
    {
        public static string coneccionCentral = "Data Source=.\\sqlexpress; Initial Catalog=FarmaciaAurora; Integrated Security=true";
        public static string coneccionSucursal1 = "Data Source=.\\sqlexpress; Initial Catalog=FarmaciaAuroraSucursal; Integrated Security=true";
        public static string coneccionSucursal2 = "Data Source=.\\sqlexpress; Initial Catalog=FarmaciaAuroraSucursal2; Integrated Security=true";
        private static void RegistrarUsuario(Usuario usuario,string conexion)
        {
            SqlConnection sql = null;
           
            try
            {
               
                sql = new SqlConnection(conexion);
                SqlCommand comando = sql.CreateCommand();
                comando.CommandText = "INSERT INTO Usuario(NombreDeUsuario,Ci,Password,IdCargo,Imagen,Estado) values(@nombreDeUsuario,@ci,@password,@idCargo,@imagen,@estado)";
                comando.Parameters.AddWithValue("nombreDeUsuario",usuario.NombreDeUsuario);
                comando.Parameters.AddWithValue("ci",usuario.CI);
                comando.Parameters.AddWithValue("password",usuario.Password);
                comando.Parameters.AddWithValue("idCargo",usuario.IdCargo);
                comando.Parameters.AddWithValue("imagen",new byte [50]);
                comando.Parameters.AddWithValue("estado",usuario.Estado);
                sql.Open();
                comando.ExecuteNonQuery();
            }
            catch (Exception)
            {
                
                throw;
            }
        }
        public static List<Usuario> DevolverTodos()
        {
            try
            {
                SqlConnection canal = new SqlConnection(coneccionCentral);
                SqlCommand comando = canal.CreateCommand();
                comando.CommandText = "SELECT * FROM [Usuario]";
                canal.Open();
                SqlDataReader reader = comando.ExecuteReader();
                if (!reader.HasRows)
                {
                    return null;
                }
                List<Usuario> list = new List<Usuario>();
                while (reader.Read())
                {
                    Usuario usuario = new Usuario();
                    usuario.CI = Int64.Parse(reader["Ci"].ToString());
                    usuario.Password = reader["Password"].ToString();
                    usuario.NombreDeUsuario = reader["NombreDeUsuario"].ToString();
                    
                    list.Add(usuario);

                }
                return list;
            }
            catch (Exception)
            {

                throw;
            }
        }
        public static void RegistrarUsuario(Usuario usuario)
        {
            try
            {
                RegistrarUsuario(usuario, coneccionCentral);
                RegistrarUsuario(usuario, coneccionSucursal1);
                RegistrarUsuario(usuario,coneccionSucursal2);
                
            }
            catch (Exception)
            {
                
                throw;
            }
        }
        public static Usuario Loguearse(string username,string password)
        {
            try
            {
                SqlConnection canal = new SqlConnection(coneccionCentral);
                SqlCommand comando = canal.CreateCommand();
                comando.CommandText = "SELECT * FROM [Usuario] where NombreDeUsuario=@nom and Password=@pass";
                comando.Parameters.AddWithValue("nom",username);
                comando.Parameters.AddWithValue("pass",password);
                canal.Open();
                SqlDataReader reader = comando.ExecuteReader();
                if (!reader.HasRows)
                {
                    return null;
                }
                Usuario usuario = new Usuario();
                while (reader.Read())
                {
                    usuario.CI = Int64.Parse(reader["Ci"].ToString());
                    usuario.Password = reader["Password"].ToString();
                    usuario.NombreDeUsuario = reader["NombreDeUsuario"].ToString();
                    usuario.IdCargo = Int64.Parse(reader["IdCargo"].ToString());
                    usuario.Estado = bool.Parse(reader["Estado"].ToString());
                }
                return usuario;
            }
            catch (Exception)
            {

                throw;
            }
        }
        
    }
}
